%
% 手动在长标题中利用 \par 输入断行，

\ctitle{基于Spring+Vue的问答网站的研发与后端优化}
\etitle{Developing a Question-Answer Website  with Spring Boot and Vue and Optimizing Its Backend}
                                       % 论文 内容提要
\cthesissummary{
    当前互联网环境中存在着许多流行的问答式网站，有的专注于特定的知识领域，例如\textit{Ask Ubuntu}和\textit{Stack Overflow}等；也有的提供了更加完善的知识主动分享和兴趣空间功能，将网站从简单的问答模式拓展成了综合性的知识平台，例如\textit{Quora}和\textit{知乎}等。这些功能丰富的网站几乎囊括了网站应该具备的各种元素：从网站功能角度来看，包括了用户注册与登录、用户发布和修改各种格式的内容、合理的用户交互接口与页面布局以及完善的消息通知等等；从网站的技术角度来看，又包括了如接口资源的安全性、数据的安全性与高效性以及业务的可扩展性等。
    
    这些具有丰富元素的网站的成功离不开其背后优秀的产品设计理念、先进的技术架构以及开发者高超的技术水平等因素，而这些因素之间又是互相影响，缺一不可。本文的目的是通过搭建一个基础的问答网站——Takkyu，对网站开发即基础流程、设计与架构、开发技术进行比对与实践，并总结出一些普遍的可优化点并进行优化。
    
    本文采用Java语言作为后端编程语言，后端和前端分别使用Spring Boot和Vue开发框架，并采用MySQL作为关系型数据库作为数据存储。根据Takkyu网站的需求，本文采用Redis作为非关系型数据库对非结构化数据的存储模式以及热点数据的备份进行了优化；整合了RabbitMQ作为消息队列处理异步服务，以提高应用响应速度并增强网站的可扩展性；本文采用WebSocket和STOMP协议针对消息通知系统进行优化，从而提高消息推送的实时性等。
}
%                                           % 关键词
\ckeywords{问答网站；Java；Spring Boot；Vue；MySQL；Redis；RabbitMQ；WebSocket}

\ethesissummary {
    There exist many popular Question\&Answer websites in the current Internet environment. Some of them focus on specific knowledge areas, such as \textit{Ask Ubuntu} and \textit{Stack Overflow}. Others, like \textit{Quora} and \textit{Zhihu}, may provide more complicated features like article posting, interest spaces, etc. to construct wondeful knowledge sharing communities. These websites cover a number of elements of a large modern website from the viewpoint of both funcationality and techology.
    
    The success of these websites result from their excellent design concepts, advanced technical architecture, the great developing skills of the developers, etc. This article aims to build a simple Q\&A website, \textit{Takkyu}. During the development, this article compared the mainstream website developing techologies and made the best choices for Takkyu, designed a reasonable architecture for the current state of it, and finally optimized some of the most common drawbacks that many websites had with their initial architeture.
    
    Takkyu is written in Java and Spring Boot framework at the backend and is developed with Vue framework at the frontend. MySQL is our choice for the relational database management system. This article uses Redis, a non-relational database, to optimize the storage model of unstructured data and backup the hotspot data; RabbitMQ is integrated to seperate the asynchronous services from the code to improve application performance: This article also leverage the WebSocket and STOMP protocols to optimize the notification system. 
}

\ekeywords{Q\&A website; Java; Spring Boot; Vue; MySQL; Redis; RabbitMQ; WebSocket}

\makecover
